/**
 * @param {number[]} nums
 * @return {number[]}
 */
var productExceptSelf = function (nums) {
  //定义一个结果数组：初始化为1
  let result = new Array(nums.length).fill(1)
  //将前缀乘积赋值给数组result，更新前缀乘积（从数组首元素开始顺序遍历）
  let prefix = 1
  for (let i = 0; i < nums.length; i++) {
    result[i] = prefix
    prefix = prefix * nums[i]
  }
  //后缀乘积和数组result相乘，更新后缀乘积（从数组尾元素开始逆序遍历）
  let suffix = 1
  for (let i = nums.length - 1; i >= 0; i--) {
    result[i] = suffix * result[i]
    suffix = suffix * nums[i]
  }
  //返回结果数组
  return result
};
console.log(productExceptSelf([1, 2, 3, 4]))